module et {
    export abstract class IFixedUpdateSystem {
        get Type() {
            return Object.getPrototypeOf(this);
        }
        abstract run(o);
    }
    export abstract class FixedUpdateSystem<T> extends IFixedUpdateSystem {
        run(o): void {
            this.fixedUpdate(o);
        }
        abstract fixedUpdate(self: T): void;
    }
}